import {Injectable} from '@angular/core';
import {InMemoryDbService} from 'angular-in-memory-web-api';
import {Hero} from "./Hero";

@Injectable({
  providedIn: 'root',
})
export class InMemoryDataService implements InMemoryDbService {
  createDb() {
    const heroes = [
      { id: 11, name: '根哥' },
      { id: 12, name: '落弟' },
      { id: 13, name: '7弟' },
      { id: 14, name: '猫弟' },
      { id: 15, name: '梦弟' },
      { id: 16, name: '佩奇弟' },
      { id: 17, name: '乱码弟' },
      { id: 18, name: '符弟' },
      { id: 19, name: '吕弟' },
    ];
    return {heroes};
  }

  /**
   * 重写genId方法以确保英雄始终具有id。
   *
   * 如果英雄阵列为空，
   *
   * 下面的方法返回初始数字（11）。
   *
   * 如果英雄数组不为空，下面的方法将返回最高值
   *
   * 英雄id+1。
   * @param heroes
   */
  genId(heroes: Hero[]): number {
    return heroes.length > 0 ? Math.max(...heroes.map(hero => hero.id)) + 1 : 11;
  }
}
